//package cn.nfwx.tv.controller;
//
//import android.app.Activity;
//import android.os.Message;
//import android.support.v4.widget.SwipeRefreshLayout;
//import android.support.v7.widget.LinearLayoutManager;
//import android.support.v7.widget.RecyclerView;
//import android.util.Log;
//import android.view.View;
//import android.view.ViewGroup;
//import android.view.animation.Animation;
//import android.view.animation.AnimationUtils;
//import android.widget.ImageView;
//import android.widget.LinearLayout;
//import android.widget.TextView;
//import android.widget.Toast;
//
//import com.chad.library.adapter.base.BaseQuickAdapter;
//import com.google.gson.Gson;
//import com.google.gson.reflect.TypeToken;
//
//import org.greenrobot.eventbus.EventBus;
//import org.json.JSONObject;
//
//import java.lang.reflect.Type;
//import java.util.ArrayList;
//import java.util.List;
//
//import cn.nfwx.tv.R;
//import cn.nfwx.tv.adapter.HotColumnAdapter;
//import cn.nfwx.tv.callback.ResponseListener;
//import cn.nfwx.tv.divider.RecycleViewDivider;
//import cn.nfwx.tv.events.SubEvents;
//import cn.nfwx.tv.manager.HotColomnManager;
//import cn.nfwx.tv.manager.SubscriptionManager;
//import cn.nfwx.tv.model.HotDataModel;
//import cn.nfwx.tv.util.NetworkUtil;
//import cn.nfwx.tv.util.RecyclerViewUtil;
//import cn.nfwx.tv.util.SharePrefUtil;
//import cn.nfwx.tv.vo.SubDelete;
//import cn.nfwx.tv.widget.CustomLoadMoreView;
//
///**
// * Created by dell on 2017/12/1.
// */
//
//public class HotColumnViewController implements  SwipeRefreshLayout.OnRefreshListener, HotColumnAdapter.OnSubClickListener, BaseQuickAdapter.RequestLoadMoreListener, HotColumnAdapter.OnCancleClickListener, View.OnClickListener {
//    private RecyclerView recyclerView;
//    private Activity activity;
//    private HotColumnAdapter adapter;
//    private int pageNo=1;
//    private int pageSize=10;
//    private List<HotDataModel> mData=new ArrayList<HotDataModel>();
//    private SwipeRefreshLayout hotcolumn_refreshLayout;
//    private View notDataView;
//    private View errorView;
//    private ImageView empty_image,error_image;
//    private TextView empty_text,error_text;
//    private LinearLayout error_refresh_btn;
//    private static final int NETWORK_ERROR_MSG=1;
//
//    public HotColumnViewController(Activity activity, View view){
//        this.activity=activity;
//        initView(view);
//    }
//    public void initView(View view){
//        recyclerView=findView(view, R.id.hot_column_recyclerView);
//        errorView= activity.getLayoutInflater().inflate(R.layout.dialog_network_error, (ViewGroup) recyclerView.getParent(), false);
//        error_image=errorView.findViewById(R.id.error_image);
//        error_text=errorView.findViewById(R.id.error_text);
//        error_refresh_btn=errorView.findViewById(R.id.error_refresh_btn);
//        hotcolumn_refreshLayout=findView(view,R.id.hotcolumn_refreshLayout);
//        RecyclerViewUtil.setLinearLayoutManagerWithoutDivder(activity,recyclerView);
//        recyclerView.addItemDecoration(new RecycleViewDivider(activity, LinearLayoutManager.HORIZONTAL,R.drawable.divider_line));
//        adapter = new HotColumnAdapter(R.layout.fragment_hot_column_item,mData);
//        adapter.setOnItemClickListener(new HotColumnAdapter.onItemClickListener() {
//            @Override
//            public void onOnItemClick(View view, int position) {
//               // adapter.setSelected(position);
//                adapter.notifyDataSetChanged();
//            }
//        });
//        adapter.setOnSubClickListener(this);
//        adapter.setOnLoadMoreListener(this);
//        adapter.setOnCancleClickListener(this);
//        adapter.setLoadMoreView(new CustomLoadMoreView());
//        recyclerView.setAdapter(adapter);
//        hotcolumn_refreshLayout.setOnRefreshListener(this);
//        error_refresh_btn.setOnClickListener(this);
//    }
//
//    public void setData(){
//        pageNo=1;
//        mData.clear();
//        HotColomnManager.requestHotList(activity, pageNo, pageSize, new ResponseListener() {
//            @Override
//            public void onResponse(String requestTag, Object response) {
//                try {
//                    JSONObject jsonObject = new JSONObject(response.toString());
//                    if("OK".equals(jsonObject.optString("code"))){
//                        Gson gson=new Gson();
//                        List<HotDataModel> rs = new ArrayList<HotDataModel>();
//                        Type type = new TypeToken<ArrayList<HotDataModel>>() {
//                        }.getType();
//                        rs = gson.fromJson(jsonObject.optString("result"), type);
//                        for(HotDataModel model:rs){
////                            SubscriptionDao dao=new SubscriptionDao(activity);
////                            if(dao.query(model.getId()).size()>0){
////                                SubscriptionModel2 subscriptionModel2=dao.query(model.getId()).get(0);
////                                subscriptionModel2.setAssets1(model.getAssets1());
////                                dao.update(subscriptionModel2);
////
////                            }
//
//                        }
//                        mData.addAll(rs);
//                        activity.runOnUiThread(new Runnable() {
//                            @Override
//                            public void run() {
//                                adapter.notifyDataSetChanged();
//                            }
//                        });
//
//
//                    }
//
//                }catch (Exception e){
//                    e.printStackTrace();
//                }
//
//
//            }
//
//            @Override
//            public void onError(String requestTag, Throwable t) {
//                 activity.runOnUiThread(new Runnable() {
//                     @Override
//                     public void run() {
//                         if(!NetworkUtil.hasNetwork(activity)){
//                             error_image.setImageResource(R.mipmap.player_nointernet);
//                             error_text.setText("世界上最遥远的距离就是断网");
//                         }else{
//                             error_image.setImageResource(R.mipmap.player_fail);
//                             error_text.setText("加载失败了，点我重试");
//                         }
//                         adapter.setEmptyView(errorView);
//                     }
//                 });
//            }
//
//            @Override
//            public void onFinish() {
//               activity.runOnUiThread(new Runnable() {
//                   @Override
//                   public void run() {
//                       hotcolumn_refreshLayout.setRefreshing(false);
//                   }
//               });
//            }
//        });
//    }
//
//
//    public void  setMoreData(){
//        pageNo=pageNo+1;
//        HotColomnManager.requestHotList(activity, pageNo, pageSize, new ResponseListener() {
//            @Override
//            public void onResponse(String requestTag, final Object response) {
//                Log.d("response:",response.toString());
//
//                activity.runOnUiThread(new Runnable() {
//                    @Override
//                    public void run() {
//                        try {
//                            JSONObject jsonObject = new JSONObject(response.toString());
//                            Log.d("response:",jsonObject.optString("code"));
//                            if("OK".equals(jsonObject.optString("code"))){
//                                Gson gson=new Gson();
//                                List<HotDataModel> rs = new ArrayList<HotDataModel>();
//                                Type type = new TypeToken<ArrayList<HotDataModel>>() {
//                                }.getType();
//                                rs = gson.fromJson(jsonObject.optString("result"), type);
//                                for(HotDataModel model:rs){
//                                    SubscriptionDao dao=new SubscriptionDao(activity);
//                                    if(dao.query(model.getId()).size()>0){
//                                        SubscriptionModel2 subscriptionModel2=dao.query(model.getId()).get(0);
//                                        subscriptionModel2.setAssets1(model.getAssets1());
//                                        dao.update(subscriptionModel2);
//
//                                    }
//
//                                }
//                                mData.addAll(rs);
//                                if(rs.size()<pageSize){
//                                    adapter.loadMoreEnd(true);
//                                }else{
//                                    adapter.loadMoreComplete();
//                                }
//                                Log.d("rs:",rs.size()+"");
//                            }
//
//                        }catch (Exception e){
//                            e.printStackTrace();
//                        }
//                        adapter.notifyDataSetChanged();
//                    }
//                });
//
//
//
//
//            }
//
//            @Override
//            public void onError(String requestTag, Throwable t) {
//
//            }
//
//            @Override
//            public void onFinish() {
//                activity.runOnUiThread(new Runnable() {
//                    @Override
//                    public void run() {
//                        hotcolumn_refreshLayout.setRefreshing(false);
//                    }
//                });
//            }
//        });
//
//    }
//
//    /**
//     * 查找控件
//     *
//     * @param rid
//     * @param <T>
//     * @return
//     */
//    public <T extends View> T findView(View view, int rid) {
//        return (T) view.findViewById(rid);
//    }
//
//    @Override
//    public void onRefresh() {
//        setData();
//    }
//
//    @Override
//    public void onSubClick(final View view, final View view2, int position, final HotDataModel model) {
//        HotColomnManager.subscribe(activity, model.getId(), model.getName(), SharePrefUtil.getUser(activity).getAccess_token(), new ResponseListener<String>() {
//            @Override
//            public void onResponse(String requestTag, String response) {
//                Log.d(requestTag, response);
//                if("true".equals(response)){
//                    activity.runOnUiThread(new Runnable() {
//                        @Override
//                        public void run() {
//                            view.setVisibility(View.GONE);
//                            view2.setVisibility(View.VISIBLE);
////                            SubscriptionDao dao=new SubscriptionDao(activity);
////                            SubscriptionModel2 subscriptionModel2=new SubscriptionModel2();
////                            subscriptionModel2.setCid(model.getId());
////                            subscriptionModel2.setAssets1(model.getAssets1());
////                            subscriptionModel2.setName(model.getName());
////                            dao.add(subscriptionModel2);
//                            EventBus.getDefault().post(new SubEvents());
//                            Toast.makeText(activity,"订阅成功",Toast.LENGTH_SHORT).show();
//
//                        }
//                    });
//                }
//            }
//
//            @Override
//            public void onError(String requestTag, Throwable t) {
//                activity.runOnUiThread(new Runnable() {
//                    @Override
//                    public void run() {
//                        Toast.makeText(activity,"订阅失败",Toast.LENGTH_SHORT).show();
//                    }
//                });
//            }
//
//            @Override
//            public void onFinish() {
//
//            }
//        });
//    }
//
//    @Override
//    public void onLoadMoreRequested() {
//        setMoreData();
//    }
//
//    @Override
//    public void onCancleClick(final View view, final View view2, int position, final HotDataModel model) {
//        Gson gson=new Gson();
//        SubDelete subDelete=new SubDelete();
//        subDelete.setCid(model.getId());
//        SubscriptionManager.cancelSubscribe(activity,   gson.toJson(subDelete), SharePrefUtil.getUser(activity).getAccess_token(), new ResponseListener<String>() {
//            @Override
//            public void onResponse(String requestTag, final String response) {
//
//                activity.runOnUiThread(new Runnable() {
//                    @Override
//                    public void run() {
//                        if ("true".equals(response)) {
//                            view.setVisibility(View.GONE);
//                            view2.setVisibility(View.VISIBLE);
////                            SubscriptionDao dao=new SubscriptionDao(activity);
////                            if(dao.query(model.getId()).size()>0){
////                                dao.delete(dao.query(model.getId()).get(0));
////                            }
//                            Toast.makeText(activity, "取消订阅成功", Toast.LENGTH_SHORT).show();
//                        }
//                    }
//                });
//            }
//
//            @Override
//            public void onError(String requestTag, Throwable t) {
//                Log.d("cancelSubscribeonError", t.getMessage());
//                activity.runOnUiThread(new Runnable() {
//                    @Override
//                    public void run() {
//
//                        Toast.makeText(activity, "取消订阅失败", Toast.LENGTH_SHORT).show();
//                    }
//                });
//            }
//
//            @Override
//            public void onFinish() {
//
//            }
//        });
//    }
//
//    @Override
//    public void onClick(View view) {
//        switch (view.getId()){
//            case R.id.error_refresh_btn:
//                error_image.setImageResource(R.drawable.footer_loading_progress);
//                Animation rotate = AnimationUtils.loadAnimation(activity, R.anim.rotate_anim);
//                error_image.startAnimation(rotate);
//                mHandler.sendEmptyMessageDelayed(NETWORK_ERROR_MSG,1000);
//                break;
//        }
//    }
//    private android.os.Handler mHandler = new android.os.Handler() {
//        @Override
//        public void dispatchMessage(Message msg) {
//            super.dispatchMessage(msg);
//            switch (msg.what) {
//                case NETWORK_ERROR_MSG:
//                    setData();
//                    break;
//            }
//        }
//    };
//
//}
